import { IActionResult, IParam } from '../../common';
/**
 * 界面行为执行结果参数
 *
 * @export
 * @interface IUIActionResult
 * @extends {IActionResult}
 */
export type IUIActionResult = IActionResult;

/**
 * 重定向输入参数
 */
export interface IRedirectInput {
	/**
	 * 重定向获取数据行为
	 *
	 * @type {(string | undefined)}
	 * @memberof IRedirectInput
	 */
	redirectAction: string | undefined;

	/**
	 * 重定向类型属性codeName
	 *
	 * @type {(string | undefined)}
	 * @memberof IRedirectInput
	 */
	redirectTypeField: string | undefined;

	/**
	 * 重定向视图是否需要处理流程中的数据
	 *
	 * @type {boolean}
	 * @memberof IRedirectInput
	 */
	isEnableWorkflow: boolean;
}

/**
 * 重定向结果值
 */
export interface IRedirectResult {
	/**
	 * 原始数据
	 *
	 * @type {IParam}
	 * @memberof IRedirectResult
	 */
	rowData: IParam;

	/**
	 * 重定向类型
	 *
	 * @type {string}
	 * @memberof IRedirectResult
	 */
	redirectType:
		| 'inwf'
		| 'multiform'
		| 'indextype'
		| 'redirectitem'
		| 'funcview';

	/**
	 * 重定向计算目标值
	 *
	 * @type {string}
	 * @memberof IRedirectResult
	 */
	targetData: IParam;
}

/**
 * 后续界面行为
 *
 * @interface INextAction
 */
export interface INextAction {
	/**
	 * 代码标识
	 *
	 * @type {string}
	 * @memberof INextAction
	 */
	name: string;

	/**
	 * 实体标识
	 *
	 * @type {string}
	 * @memberof INextAction
	 */
	actionDeCodeName?: string;

	/**
	 * 预定义类型
	 *
	 * @type {string}
	 * @memberof INextAction
	 */
	predefinedType?: string;
}

/**
 * 界面行为运行时数据接口
 */
export interface IActionModel {
	/**
	 * 刷新引用视图模式
	 *
	 * @type {string}
	 * @memberof IActionModel
	 */
	refreshMode: number | 0 | 1 | 2 | 3;

	/**
	 * 行为实体代码名称
	 *
	 * @type {string}
	 * @memberof IActionModel
	 */
	entityCodeName: string;

	/**
	 * 主键属性代码名称
	 *
	 * @type {string}
	 * @memberof IActionModel
	 */
	keyFieldCodeName: string;

	/**
	 * 主信息属性代码名称
	 *
	 * @type {string}
	 * @memberof IActionModel
	 */
	majorFieldCodeName: string;

	/**
	 * 界面逻辑附加类型
	 *
	 * @type {string}
	 * @memberof IActionModel
	 */
	uILogicAttachMode?: 'REPLACE' | 'AFTER';

	/**
	 * 实体处理逻辑标识
	 *
	 * @type {string}
	 * @memberof IActionModel
	 */
	deUILogicTag?: string;

	/**
	 * 关闭编辑视图
	 *
	 * @type {boolean}
	 * @memberof IActionModel
	 */
	closeEditView: boolean;

	/**
	 * 后续界面行为
	 *
	 * @type {INextAction}
	 * @memberof IActionModel
	 */
	nextAction?: INextAction;
	/**
	 * 界面行为数据目标
	 *
	 * @type {string}
	 * @memberof IActionModel
	 */
	actionTarget: string;

	/**
	 * 界面行为导航上下文
	 *
	 * @type {IParam}
	 * @memberof IActionModel
	 */
	navContexts?: IParam;

	/**
	 * 导航参数
	 *
	 * @type {IParam}
	 * @memberof IActionModel
	 */
	navParams?: IParam;

	/**
	 * 重新加载数据
	 *
	 * @type {boolean}
	 * @memberof IActionModel
	 */
	reloadData: boolean;
}
